using UnityEngine;

public class CanvasFaceCamera : MonoBehaviour
{
    // 你可以在Inspector中拖拽你的主摄像机到这里
    // 如果留空，脚本会自动查找带有"MainCamera"标签的摄像机
    public Camera mainCamera;

    void Start()
    {
        // 如果没有手动指定摄像机，尝试查找主摄像机
        if (mainCamera == null)
        {
            mainCamera = Camera.main;
            if (mainCamera == null)
            {
                Debug.LogError("CanvasFaceCamera: 没有找到主摄像机！请确保场景中有一个带有 'MainCamera' 标签的摄像机，或手动将摄像机拖拽到脚本的 'Main Camera' 字段中。");
                enabled = false; // 禁用脚本以避免持续错误
                return;
            }
        }

        // 确保画布的渲染模式是 World Space，否则此脚本可能没有预期的效果
        Canvas canvas = GetComponent<Canvas>();
        if (canvas != null && canvas.renderMode != RenderMode.WorldSpace)
        {
            Debug.LogWarning("CanvasFaceCamera: 绑定此脚本的 Canvas 的渲染模式不是 World Space。此脚本主要用于 World Space Canvas。如果您的 Canvas 是 Overlay 或 Screen Space，它已经始终朝向屏幕。");
        }
    }

    void LateUpdate()
    {
        // 在 LateUpdate 中执行，以确保所有摄像机移动都已完成
        if (mainCamera != null)
        {
            // 使画布的 forward (Z轴) 指向摄像机
            transform.LookAt(transform.position + mainCamera.transform.rotation * Vector3.forward,
                             mainCamera.transform.rotation * Vector3.up);

            // 也可以使用以下方法，但 LookAt 更简洁
            // transform.rotation = mainCamera.transform.rotation;
        }
    }
}